#ifndef __BSP_H__
#define __BSP_H__

#include "hc32_ll.h"

/**
 * @defgroup EV_HC32F4A0_LQFP176_XTAL_CONFIG EV_HC32F4A0_LQFP176 XTAL port/pin definition
 * @{
 */
#define BSP_XTAL_PORT                   (GPIO_PORT_H)
#define BSP_XTAL_PIN                    (GPIO_PIN_00 | GPIO_PIN_01)

/**
 * @defgroup EV_HC32F4A0_LQFP176_PRINT_CONFIG EV_HC32F4A0_LQFP176 PRINT Configure definition
 * @{
 */
#define BSP_PRINTF_DEVICE               (CM_USART3)
#define BSP_PRINTF_DEVICE_FCG           (FCG3_PERIPH_USART3)

#define BSP_PRINTF_BAUDRATE             (115200UL)
#define BSP_PRINTF_BAUDRATE_ERR_MAX     (0.025F)

#define BSP_PRINTF_PORT                 (GPIO_PORT_D)
#define BSP_PRINTF_PIN                  (GPIO_PIN_01)
#define BSP_PRINTF_PORT_FUNC            (GPIO_FUNC_32)

#define BSP_LED0_PORT (GPIO_PORT_D)
#define BSP_LED0_PIN (GPIO_PIN_07)

#define BSP_LED1_PORT (GPIO_PORT_D)
#define BSP_LED1_PIN (GPIO_PIN_06)

#define BSP_LED2_PORT (GPIO_PORT_D)
#define BSP_LED2_PIN (GPIO_PIN_05)

#define BSP_LED3_PORT (GPIO_PORT_D)
#define BSP_LED3_PIN (GPIO_PIN_04)

#define BSP_LED4_PORT (GPIO_PORT_D)
#define BSP_LED4_PIN (GPIO_PIN_14)

#define BSP_LED5_PORT (GPIO_PORT_D)
#define BSP_LED5_PIN (GPIO_PIN_15)

#define BSP_LED4_ON() GPIO_SetPins(BSP_LED4_PORT, BSP_LED4_PIN)
#define BSP_LED4_OFF() GPIO_ResetPins(BSP_LED4_PORT, BSP_LED4_PIN)

#define BSP_LED5_ON() GPIO_SetPins(BSP_LED5_PORT, BSP_LED5_PIN)
#define BSP_LED5_OFF() GPIO_ResetPins(BSP_LED5_PORT, BSP_LED5_PIN)

void BSP_CLK_Init(void);
#if (LL_PRINT_ENABLE == DDL_ON)
int32_t BSP_PRINTF_Preinit(void *vpDevice, uint32_t u32Baudrate);
#endif

void BSP_LCDBlk_Init(void);
void BSP_LED_Init(void);
void BSP_LEDSide_Init(void);

#endif // __BSP_H__